import { createParamDecorator, ExecutionContext } from '@nestjs/common'

import * as requestIp from 'request-ip'

export const IpAddress = createParamDecorator(
  (data: unknown, ctx: ExecutionContext) => {
    const req = ctx.switchToHttp().getRequest()
    if (req.clientIp)
      return req.clientIp
    return requestIp.getClientIp(req)
  })